package com.example.bean;

import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFDateUtil;
import org.apache.poi.ss.usermodel.Cell;
import org.springframework.stereotype.Component;


/**
 * 判断字符串的工具类
 *
 */
@Component
public class StringUtil {

	public static SimpleDateFormat sdfYMD                 = new SimpleDateFormat("yyyy-MM-dd");

	/**
	 * 判空
	 * @param str
	 * @return
	 */
	public static boolean isEmpty(String str) {
		if(str == null || "".equals(str.trim())) {
			return true;
		} else {
			return false;
		}
	}


	/**
	 * 判非空
	 * @param str
	 * @return
	 */
	public static boolean isNotEmpty(String str) {
		if((str != null) && !"".equals(str.trim())) {
			return true;
		} else {
			return false;
		}
	}


	/**
	 * 添加格式
	 * @param str
	 * @return
	 */
	public static String formatLike(String str) {
		if(isNotEmpty(str)) {
			return "%" + str + "%";
		} else {
			return null;
		}
	}


	/**
	 * 过滤空白字符串
	 * @param list
	 * @return
	 */
	public static List<String> filterWhite(List<String> list) {
		List<String> resultList = new ArrayList<String>();
		for(String l : list) {
			if(isNotEmpty(l)) {
				resultList.add(l);
			}
		}
		return resultList;
	}

	/**
	 * 判断是否为中文
	 */
	public static boolean isChinese(String string){
		String reg = "[\\u4e00-\\u9fa5]+";
		return string.matches(reg);
	}

	/***
	 * 当前行列的值转成String返回
	 *
	 * @param cell
	 * @return
	 */
	public static String paseStringByCell(Cell cell) {
		if (cell != null) {
			switch (cell.getCellType()) {
				case HSSFCell.CELL_TYPE_NUMERIC: // 数字
					if (HSSFDateUtil.isCellDateFormatted(cell)) {
						return sdfYMD.format(HSSFDateUtil.getJavaDate(cell.getNumericCellValue()));
					}
					return "" + (int) cell.getNumericCellValue();
				case HSSFCell.CELL_TYPE_STRING: // 字符串
					return cell.getStringCellValue();
				case HSSFCell.CELL_TYPE_BOOLEAN: // Boolean
					return cell.getBooleanCellValue() ? "1" : "0";
				case HSSFCell.CELL_TYPE_FORMULA: // 公式
					return cell.getCellFormula();
				case HSSFCell.CELL_TYPE_BLANK: // 空值
					return null;
				case HSSFCell.CELL_TYPE_ERROR: // 故障
					System.out.println("故障");
					return null;
				default:
					System.out.print("未知类型   ");
					return null;
			}
		} else {
			return null;
		}
	}

	/**
	 * 过滤空格换行回车制表符
	 * @param str
	 * @return
     */
	public static String replaceBlank(String str) {
		String dest = "";
		if (str!=null) {
			Pattern p = Pattern.compile("\\s*|\t|\r|\n");
			Matcher m = p.matcher(str);
			dest = m.replaceAll("");
		}
		return dest;
	}

	/**
	 * 驼峰命名转为下划线命名
	 * @param para
	 * @return
	 */
	public static String HumpToUnderline(String para){
		if(para==null){
			return null;
		}else{
			StringBuilder sb=new StringBuilder(para);
	        int temp=0;//定位
	        for(int i=0;i<para.length();i++){
	            if(Character.isUpperCase(para.charAt(i))){
	                sb.insert(i+temp, "_");
	                temp+=1;
	            }
	        }
	        return sb.toString().toLowerCase();
		}
	}
	public static String  getNumber() {
		int a1=(int)(Math.random()*9+1)*100000;
		int a2=(int)(Math.random()*9+1)*10000;
		int a3=(int)(Math.random()*9+1)*1000;
		int a4=(int)(Math.random()*9+1)*100;
		int a5=(int)(Math.random()*9+1)*10;
		int a6=(int)(Math.random()*9+1);
		int ai=a1+a2+a3+a4+a5+a6;
		String value = String.valueOf(ai);
		return value;
	}

}
